home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / DOS / UTILITY / MXMNU238 / MARXREAD.ME < prev    next >
Text File  |  1992-03-01  |  14KB  |  481 lines

  1. Version 2.35
  2.  
  3. 12-02-91
  4.  
  5. Added software serialization and access codes. When MarxMenu is first
  6. run it asks you for your serial number and access code. This unlocks
  7. MarxMenu for your system.
  8.  
  9. UnBlank command has been expanded to allow you to set UnBlank to true
  10. when you want to override MarxMenu's internal unblank logic. This allows
  11. you to write external programs for MarxMenu to use as a screen blanker.
  12.  
  13. VarType (Variable) : String
  14. VarType returns the type of data contained in a variable. Types returned
  15. include the following:
  16.  
  17.   NUL
  18.   NUMBER
  19.   REAL
  20.   STRING
  21.   ARRAY
  22.   FILE
  23.   POINTER
  24.   PROCEDURE
  25.   UNKNOWN
  26.  
  27. NovVolumeNumber (Directory) : Number
  28. Returns the Novell volume number of a directory.
  29.  
  30.  Example:
  31.    Writeln NovVolumeNumber ('F:')
  32.  
  33. NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
  34. Returns a 2 dimensional array containing the name of the trustee paths
  35. assigned to the object and the trustee access rights.
  36.  
  37.  Example:
  38.    var X
  39.    NovScanTrusteePaths (X,'MARC',1)
  40.    Loop X
  41.       Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
  42.    EndLoop
  43.  
  44. 12-16-91
  45.  
  46. ReadAscTextFile (FileName,2D Array)
  47. ReadAscTextFile reads a standard comma delimited text file into a two
  48. dimensional array. The lines of the file must be limited to 255
  49. characters and the number of lines must be less than 13100. It also has
  50. to fit in memory.
  51.  
  52. All text in quotes is converted to strings. Numbers not in quotes are
  53. translated as numbers unless there is a '.' in which case they are
  54. translated as floating point numbers.
  55.  
  56. 12-19-91
  57. Enhanced the Password command. The password is case sensitive if the
  58. password in the source code is lower case. But if the password in the
  59. source code is in uppercase then the password is not case sensitive.
  60.  
  61.  Example:
  62.     Password 'CRITTER' 4 3    ;will accept critter or CRITTER
  63.     Password 'CriTTeR' 4 3    ;will only accept CriTTeR
  64.  
  65. 12-30-91
  66. Enhanced the way the inverse bar works. You can now have a window with
  67. multiple colors and move the inverse bar over them and it restores the
  68. original color.
  69.  
  70.  
  71. HexString (Number, Length) : String
  72. HexString converts a number into a base 16 hexadecimal string. If Length
  73. > 0 then the number will have enough leading zeros to make it Length
  74. long. If Length = 0 then leading zeros are removed. Length must be 8 or
  75. less.
  76.  
  77.  Example:
  78.     Writeln HexSt(253,4)   ;returns 00FD
  79.     Writeln HexSt(253,0)   ;returns FD
  80.  
  81.  
  82. BinString (Number, Length) : String
  83. BinString converts a number into a base 2 binary string. If Length > 0
  84. then the number will have enough leading zeros to make it Length long.
  85. If Length = 0 then leading zeros are removed. Length must be 32 or less.
  86.  
  87.  Example:
  88.     Writeln HexSt(45,8)    ;returns 00101101
  89.     Writeln HexSt(45,0)    ;returns 101101
  90.  
  91.  
  92. GetMem (Number) : Segment
  93. GetMem allocates the amount of memory specified in Number and returns
  94. the memory segment where the memory was allocated. The memory segment is
  95. filled with 0s. The maximum size of the memory block is 65504 bytes.
  96.  
  97. You can then read and write to this memory area using the Mem commands.
  98.  
  99.  Example:
  100.     var RamBlock
  101.     RamBlock = GetMem(2000)  ;allocate 2000 bytes of memory
  102.     Mem(RamBlock,0) = 5      ;writes the number 5 to the first byte
  103.  
  104.  
  105. FreeMem(Segment)
  106. FreeMem deallocates memory that was allocated with GetMem. FreeMem
  107. automatically knows how much memory to deallocate.
  108.  
  109.  
  110. ReadFileBlock (Name,Offset,Size,Segment)
  111. ReadFileBlock reads disk file Name starting at byte Offset for Size
  112. bytes into memory buffer Segment. It is intended to read any kind of
  113. file.
  114.  
  115. The maximum value for Size is 65504. The segment must be as large as the
  116. number of bytes you are reading. The following example will copy a small
  117. file.
  118.  
  119.  Example:
  120.    Var RamBlock Size
  121.    Size = FileSize 'MARXREAD.ME'
  122.    RamBlock = GetMem(Size)
  123.    ReadFileBlock('MARXREAD.ME' 0 Size RamBlock)
  124.    WriteFileBlock('COPYREAD.ME' 0 Size RamBlock)
  125.    FreeMem(RamBlock)
  126.  
  127.  
  128. WriteFileBlock (Name,Offset,Size,Segment)
  129. WriteFileBlock writes disk file Name starting at byte Offset for Size
  130. bytes from memory buffer Segment. It is intended to write any kind of
  131. file. If the file doesn't exist, it is created.
  132.  
  133. The maximum value for Size is 65504. The segment must be as large as the
  134. number of bytes you are writing.
  135.  
  136. Now, a feature you've all been waiting for. You can now make MsDos and
  137. Interrupt calls directly from MarxMenu.
  138.  
  139.  
  140. MsDos (Registers)
  141. MsDos calls the interrupt 21h system call using values passed in an
  142. array of 10 numbers. The array is set up using predefined Qualifiers
  143. that represent the registers that are passed. These qualifiers are:
  144.  
  145.  AX BX CX DX DI SI DS ES BP FL
  146.  
  147.  Example: Get Current Drive
  148.    var Reg
  149.    Reg.AX = $1900
  150.    MsDos(Reg)
  151.    Writeln Char(LowWord(Reg.AX) + 1) ':'     ;writes C:
  152.  
  153.  
  154. Intr (Interrupt,Registers)
  155. Intr works just like MsDos except that it lets you choose which
  156. interrupt you want to call.
  157.  
  158.  
  159. HighWord (Number) : Number
  160. Returns the value of the upper 16 bits of a number.
  161.  
  162.  
  163. LowWord (Number) : Number
  164. Returns the value of the lower 16 bits of a number.
  165.  
  166.  
  167. Segment (String) : Number
  168. Returns the memory segment where string is located.
  169.  
  170.  
  171. Offset (String) : Number
  172. Returns the memory offset where string is located.
  173.  
  174.  
  175. New Novell Goodies:
  176.  
  177. NovMyPrintQueues (Array)
  178. Returns a list of all print queues that the user has access too.
  179.  
  180.  
  181. NovTotalVolumeSpace (Path) : Number
  182. Returns the total file space of the volume in bytes.
  183.  
  184.  Example:
  185.    Writeln NovTotalVolumeSpace 'SYS:'
  186.    Writeln NovTotalVolumeSpace 'F:'
  187.  
  188.  
  189. NovFreeVolumeSpace (Path) : Number
  190. Returns the free file space of the volume in bytes.
  191.  
  192.  Example:
  193.    Writeln NovFreeVolumeSpace 'SYS:'
  194.    Writeln NovFreeVolumeSpace 'F:'
  195.  
  196.  
  197. NovTotalDirSlots (Path) : Number
  198. Returns the total number of directory slots for this volume.
  199.  
  200.  Example:
  201.    Writeln NovTotalDirSlots 'SYS:'
  202.    Writeln NovTotalDirSlots 'F:'
  203.  
  204.  
  205. NovFreeDirSlots (Path) : Number
  206. Returns the number of free directory slots for this volume.
  207.  
  208.  Example:
  209.    Writeln NovFreeDirSlots 'SYS:'
  210.    Writeln NovFreeDirSlots 'F:'
  211.  
  212. ===============================================================
  213.  
  214. Version 2.36
  215.  
  216. 01-07-91
  217.  
  218. SplitPath (Array)
  219. SplitPath reads the PATH environment variable and splits it up into and
  220. array of strings that are directories the path is made up of. All
  221. directory names are capitalized.
  222.  
  223.  
  224. BuildPath (Array)
  225. BuildPath sets the PATH environment variable to the driectories listed
  226. in the Array variable. The first element in the array becomes the first
  227. search path.
  228.  
  229. 01-18-91
  230.  
  231. ****** Good news for VINES users! ******
  232.  
  233. Banyan has sent me a free copy of Vines so I can add Vines goodies to
  234. marxMenu. (Thanks to Dan Pettengell) And I have started to get it
  235. working. I've set up the server and am running Vines and Netware on the
  236. same workstation.
  237.  
  238. It may be because I'm just used to Novell but so far I have found
  239. learning Vines somewhat awkward. Perhaps this means there is a market
  240. for some serious utilities here. I welcome any feedback on the subject.
  241.  
  242. All Vines commands will start with the prefix Vin.
  243.  
  244.  
  245. VinesLoaded : Boolean
  246. VinesLoaded returns True if the Vines shell is loaded.
  247.  
  248. VinesInt : Number
  249. Returns the interrupt number the Vines software is servicing.
  250.  
  251. VinUserName : String
  252. Returns the StreetTalk name of the person who is logged in.
  253.  
  254. VinSerialNumber (Drive) : Number
  255. Returns the Vines serial number on the server that the drive letter
  256. referrences.
  257.  
  258.  Example:
  259.    Writeln VinSerialNumber ('Z')
  260.  
  261. VinCheckService (Service) : Number
  262. Returns information about the requested service.
  263.  
  264.  Services:
  265.  
  266.     1 - Communications
  267.     2 - Primary 3270 Emulation ID
  268.     3 - Async Terminal Emulation
  269.     4 - File Deflection
  270.     5 - BPS
  271.     6 - UnDocumented
  272.     7 - StreetTalk
  273.     8 - Environment
  274.     9 - NetBios
  275.    10 - Secondary 3270 Emulation ID
  276.    11 - Semaphore
  277.    12 - 3270 Emulation Active Status
  278.    13 - 3270 Keyboard Interrupt Simulator
  279.    14 - Advanced 3270 SNA
  280.    15 - UnDocumented
  281.    16 - UnDocumented
  282.  
  283.  Return Codes:
  284.     0 - Service is Installed
  285.     1 - Service is not Installed
  286.     2 - Invalid Service Number
  287.  
  288.  
  289. 02-04-92
  290. New Novell Goodies:
  291.  
  292. NovCaptureSetup (Port) : String
  293. NovCaptureSetup can read or set the setup string for a print queue.
  294.  
  295.  Example:
  296.    NovCaptureSetup (1) = Esc + char($15)
  297.    Writeln NovCaptureSetup (1) ;reads the capture setup string
  298.  
  299.  
  300. NovCaptureReset (Port) : String
  301. NovCaptureReset can read or set the reset string for a print queue.
  302.  
  303.  Example:
  304.    NovCaptureReset (1) = Esc + char($15)
  305.    Writeln NovCaptureReset (1) ;reads the capture setup string
  306.  
  307.  
  308. Nil
  309. Nil returns a zero or empty value for any type data. As a boolean Nil
  310. returns False. As a number Nil returns 0. As a string, Nil returns an
  311. empty string.
  312.  
  313. ===============================================================
  314.  
  315. Version 2.37
  316.  
  317. 02-27-92
  318.  
  319. Digital Research (Novell) has published it's API programmers interface
  320. into it's TaskMax task switcher. And I have added these features to
  321. MarxMenu. MarxMenu can now totally control the TaskMax interface and
  322. replace the TaskMax popup menu with a write your own interface MarxMenu
  323. system.
  324.  
  325. I want to make the comment that this interface is an example of a
  326. programmers interface done right. It took me only a few hours to
  327. interface into every significant routine that DR offered. The interface
  328. was simple and straight forward and easy to program for and I want to
  329. thank DRI for doing it right.
  330.  
  331. For those of you out there who might now ask me about a Windows version
  332. the answer is still no. The reason being that Windows is a programmers
  333. nightmare and a support nightmare. I think windows is a mistake and a
  334. mistake that I'm not going to support. Those vendors who have been
  335. pressured into comming out with Windows versions of their product have
  336. had their DOS products freeze in time. It is my position that DOS comes
  337. first and as long as DOS is the #1 operating system sold and continues
  338. to outsell Windows by 10 to 1 I will stay committed do DOS products.
  339.  
  340. I personally am using MS-DOS 5 on my workstations because my current
  341. copy of DR 6 (and I have the December-91 update) has a number of bigs.
  342. One of these is slow floppy disk problem and since I'm in the software
  343. producing business and produce a lot of floppies it's an issue for me. I
  344. am hoping that Digital Research gets this and other bugs fixed so that I
  345. can switch.
  346.  
  347. Having gotten that off my chest, here's the new features:
  348.  
  349. I have written a quite elaborate sample menu TMAX.MNU that demonstrates
  350. the power of these new features. Anyone wanting to do serious work with
  351. this should look at this sample first.
  352.  
  353.  
  354. TMaxInstalled : Boolean
  355. This function returns true if TaskMax is installed. Any other TaskMax
  356. command produces a run-time error if used when TaskMax is not installed.
  357.  
  358.  
  359. TMaxResult : Number
  360. TMaxResult is a variable containing return information that other TMax
  361. command return or the result status of a TMax command.
  362.  
  363.  
  364. TMaxCreateTask (command string)
  365. TMaxCreateTask creates a new task and executes it. You pas it a command
  366. line just like you would use the Execute program. Like the execute
  367. program, if you use the COM or EXE extension then you won't load a
  368. secondary command.com and save yourself 5k of memory and gain some
  369. speed. When the program exits that task is cleared.
  370.  
  371.  Example:
  372.     TMaxCreateTask 'DIR *.*'
  373.  
  374.  
  375. TMaxSwitchTasks (TaskID)
  376. Switches the current task out and selects the task identified be TaskID.
  377.  
  378.  
  379. TMaxDeleteTask (TaskID)
  380. Kills the task identified by TaskID.
  381.  
  382.  
  383. TMaxMaxTasks : Number
  384. Returns the total number of tasks allowed by TaskMax.
  385.  
  386.  
  387. TMaxActiveTasks : Number
  388. Returns the number of active tasks.
  389.  
  390.  
  391. TMaxDirectSwitching (On/Off)
  392. Turns on or off the ability to use the direct switch keys without going
  393. through the task manager menu.
  394.  
  395.  
  396. TMaxEMSMemLim (Number)
  397. This is a variable that can be either read or set to the maximum number
  398. of bytes of EMS memory that each task can have. This prevents one task
  399. from hogging up all the EMS. Setting this to 0 disables limiting.
  400.  
  401.  Example:
  402.     TMaxEMSMemLim = 2000000   ;2 megs per task
  403.     Writeln TMaxEMSLim
  404.  
  405.  
  406. TMaxReadTaskInfo (2D Array)
  407. Reads the task information table into a 2 dimensional array where the
  408. first field is the task name and the second field is the TaskId number.
  409. The TaskID number is used by all TMax commands that act on a single task
  410. (TMaxDelete, TMaxSwitchTasks ... ).
  411.  
  412.  Example:
  413.     var Tasks
  414.     TMaxReadTaskInfo(Tasks)
  415.     Loop Tasks
  416.        Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
  417.     EndLoop
  418.  
  419.  
  420. TMaxSwitchToManager
  421. This command brings up the task manager the same way as if you had
  422. pressed the hot key.
  423.  
  424.  
  425. TMaxTakeOver (On/Off)
  426. This allows you MarxMenu program to become the task manager menu. When
  427. the user presses the hot key to pop up the task switching menu it will
  428. pop up your MarxMenu program instead. You can disable this by setting it
  429. to off.
  430.  
  431.  
  432. TMaxThisTask : Number
  433. Returns the TaskID of the current task.
  434.  
  435.  
  436. TMaxVersion : Number
  437. Returns the version number of TaskMax.
  438.  
  439.  
  440. TMaxReturnCount
  441. This variable sets the number of timer ticks (18.2 ticks per second)
  442. that TMaxCreateTask will execute a program before returning to the
  443. original program. If it is set to 0 it will stay in the original
  444. program. By setting TMaxReturnCount to a number other than 0 you can run
  445. a program for a few seconds and come back. This is used to preload tasks
  446. that you might later want to switch to.
  447.  
  448.   Example:
  449.      TMaxReturnCount = 27      ;1.5 Seconds
  450.      TMaxCreateTask 'DM3.EXE'  ;load a file manager
  451.      TMaxReturnCount = 0       ;set back to 0 for normal usage
  452.  
  453.  
  454. TMaxTaskOpenFiles (TadkID) : Number
  455. Returns the number of open files a task has. You may want to test to see
  456. if a task that open files before deleting the task.
  457.  
  458.  
  459. TMaxCut (TaskID)
  460. Activates TaskMax data cutting function.
  461.  
  462.  
  463. TMaxPaste (TaskID)
  464. Activates TaskMax data pasting function.
  465.  
  466.  
  467. TMaxGetPasteBuffer (Array)
  468. Reads the TaskMax paste buffer into and array of strings.
  469.  
  470.  
  471. TMaxSetPasteBuffer (Array)
  472. Sets the TaskMax paste buffer to the strings in array.
  473.  
  474.  
  475. Other Features:
  476.  
  477. PickManyPositions (Array)
  478. After running PickMany and array PickManyPositions is created the has
  479. the position numbers in the original array that were chosen.
  480.  
  481.